--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / android / app / src / main / python / jnius / __init__.py
Displaying Raw • Download
android/app/src/main/python/jnius/__init__.py d23b169b412be2edf42f9089aaa63ff3bd40ec3f (d23b169b) Text, 2.08 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""PyJNIus-compatible facade over Chaquopy's ``java`` module.
RNS, usb4a, and related Android serial/Bluetooth code import ``jnius``.
Chaquopy does not ship pyjnius. Map the small surface those libraries need
onto Chaquopy's native Java bridge so RNode USB and classic Bluetooth work.
"""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Te6edf3JavaException Tff7b72= Tf85149Exception
Tff7b72tryTb4b4b4:
Tff7b72from T7ee787java Tff7b72import Te6edf3cast Tff7b72as Te6edf3_java_cast
Tff7b72from T7ee787java Tff7b72import Te6edf3dynamic_proxy
Tff7b72from T7ee787java Tff7b72import Te6edf3jclass
Tff7b72except Tf85149ImportError Tff7b72as Te6edf3excTb4b4b4: T8b949e# pragma: no cover - desktop import path
Tff7b72raise Tf85149ImportErrorTb4b4b4(Ta5d6ff"Ta5d6ffjnius Chaquopy shim requires the Chaquopy java moduleTa5d6ff"Tb4b4b4) Tff7b72from T7ee787exc
Tff7b72def Td2a8ffautoclassTb4b4b4(Te6edf3class_nameTb4b4b4: Tffa657strTb4b4b4)Tb4b4b4:
T8b949e"""Return a Java class, matching pyjnius ``autoclass``."""
Tff7b72return Te6edf3jclassTb4b4b4(Te6edf3class_nameTb4b4b4)
Tff7b72def Td2a8ffcastTb4b4b4(Tff7b72clsTb4b4b4, Te6edf3objTb4b4b4)Tb4b4b4:
T8b949e"""Cast ``obj`` to ``cls``, accepting a class name string like pyjnius."""
Tff7b72if Tffa657isinstanceTb4b4b4(Tff7b72clsTb4b4b4, Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72cls Tff7b72= Te6edf3jclassTb4b4b4(Tff7b72clsTb4b4b4)
Tff7b72return Te6edf3_java_castTb4b4b4(Tff7b72clsTb4b4b4, Te6edf3objTb4b4b4)
Tff7b72def Td2a8ffjava_methodTb4b4b4(Te6edf3_signatureTb4b4b4)Tb4b4b4:
T8b949e"""No-op decorator. Chaquopy dynamic proxies do not need JNI signatures."""
Tff7b72def Td2a8ffdecoratorTb4b4b4(Te6edf3fnTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3fn
Tff7b72return Te6edf3decorator
Tff7b72class T56d364PythonJavaClassTb4b4b4:
T8b949e"""Base that rebinds subclasses onto ``java.dynamic_proxy`` interfaces.
Subclasses set ``__javainterfaces__`` to a list of Java interface names
(dot or slash form). Instantiation switches the instance class bases so
method implementations are visible to Java callers.
"""
Te6edf3__javainterfaces__Tb4b4b4: Tffa657listTb4b4b4[Tffa657strTb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3__javacontext__ Tff7b72= Ta5d6ff"Ta5d6ffappTa5d6ff"
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3interfaces Tff7b72= Tffa657listTb4b4b4(Tffa657getattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff"Ta5d6ff__javainterfaces__Ta5d6ff"Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4) Tff7b72or Tb4b4b4[Tb4b4b4]Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3interfacesTb4b4b4:
Tff7b72return
Te6edf3resolved Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3name Tff7b72in Te6edf3interfacesTb4b4b4:
Te6edf3jni_name Tff7b72= Te6edf3nameTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff.Ta5d6ff"Tb4b4b4)
Te6edf3resolvedTff7b72.Td2a8ffappendTb4b4b4(Te6edf3jclassTb4b4b4(Te6edf3jni_nameTb4b4b4)Tb4b4b4)
Te6edf3proxy_base Tff7b72= Te6edf3dynamic_proxyTb4b4b4(Tff7b72*Te6edf3resolvedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__class__Tff7b72.Td2a8ff__bases__ Tff7b72= Tb4b4b4(Te6edf3proxy_baseTb4b4b4, Tffa657objectTb4b4b4)
Te6edf3__all__ Tff7b72= Tb4b4b4[
Ta5d6ff"Ta5d6ffJavaExceptionTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffPythonJavaClassTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffautoclassTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcastTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdynamic_proxyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffjava_methodTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffjclassTa5d6ff"Tb4b4b4,
Tb4b4b4]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────